package com.juc.learn.learnlock_2;

/**
 * ClassName:Test
 * Package:com.juc.learn.learnlock_2
 * Description:Lock之ReentrantLock（可重入锁），Lock锁的实现提供了比使用同步方法和语句可以获得的更广泛的锁操作。他们允许更灵活的结构，可能
 * 具有不同的属性，并且可能支持多个关联的条件对象。Lock提供了比synchronized更多的功能。注意Lock不是Java语言内置的，synchronized是Java语言的关键字，这个是一个内置特性，
 * Lock是一个类，通过这个类可以实现同步访问
 * Lock和synchronized有一点非常大的不同就是，采用synchronized不需要用户手动释放锁，当synchronized方法或者synchronized代码块执行完
 * 之后，系统会自动的让线程释放对锁的占用；而Lock则必须要用户去手动释放锁，如果没有主动释放锁，就可能会出现死锁
 *
 *
 * @Author:@郭先森
 * @Create:2025/7/26 - 15:55
 * @Version:v1.0
 */
public class Test {
    public static void main(String[] args) {
        LSaleTicket ticket = new LSaleTicket();

        new Thread(()->{
            for (int i = 0; i < 35; i++) {
                ticket.sale();
            }
        }, "线程1").start();
        new Thread(()->{
            for (int i = 0; i < 35; i++) {
                ticket.sale();
            }
        }, "线程2").start();
        new Thread(()->{
            for (int i = 0; i < 35; i++) {
                ticket.sale();
            }
        }, "线程3").start();


    }
}
